Date		:	15 d�cembre 1990
		Programme	:	HEAVY METAL 
		Protection	:	Mot de passe
		Fichier		:	METAL.EXE
		Outils		:	PERISCOPE, Carte PANO, QUAID ANALYSER.
		Temps pass�	:	2h
		Divers		:	PERISCOPE charg� � 1979:0000
		Soci�t�		:	
		Origine		:	INDONESIE
		Num�ro		:	045


	Programme d�plomb� � moiti�, c'est � dire que l'on peut y jouer
	sans indiquer de mot de passe mais l'affichage des scores ne se
	fait pas en fin de partie, seulement dans la partie en cours.
	Et �galement la pr�sentation est shunt�e, mais �a c'est un moindre
	mal. Il faut noter toutefois que si l'on rentre le bon mot de passe
	le programme fonctionne toujours...

	A la demande du mot de passe se placer successivement sur l'INT21 et
	l'INT16 pour voir si l'une des deux est utilis�e pour l'entr� des
	caract�res. OK c'est l'INT16. 

	Taper G {SS:SP} pour se trouver � la sortie puis faire une recherche
	de test de la touche ENTER dans le SEGMENT courant;

	S CS:0 FFFF 3C 0D.		---> 3C 0D = CMP AL,0D

	Trois endroits apparaissent:

	34B3:091B
	34B3:2501
	34B3:2BF7

	En se pla�ant sur le premier, il s'av�re que c'est le bon. Le suivre
	jusqu'� se que l'on arrive au saut list� ci-dessous et inverser le
	saut.

	34B3:0782 7518          JNZ     079C                        ; jump
	34B3:0784 C706AC5D0000  MOV     WORD PTR [5DAC],0000
	34B3:078A E833FC        CALL    03C0
	34B3:078D 833EDE1104    CMP     WORD PTR [11DE],+04
	34B3:0792 7407          JZ      079B
	34B3:0794 8E06CD11      MOV     ES,[11CD]
	34B3:0798 E801FC        CALL    039C
	34B3:079B C3            RET

	C'est tout bon, CTRL ALT DEL pour sortir rapidement et lancer PCTOOLS
	pour figer la modification.

	Et l� surprise ( mais cel� ne m'�tonne qu'� moiti� ) la chaine est
	introuvable dans METAL.EXE et il n'y a pas d'OVL. A tout hazard je
	recherche tout le r�pertoire, sans r�sultat.
	Je lance QUAID pour avoir confirmation ; effectivement METAL.EXE
	ne se sert d'aucun overlay ni d'un fichier quelconque � cet endroit l�.
	"Ils" sont plus rus�s que je ne le pensait, cette partie de code est
	lu quelque part et plac�e l� une fois le programme ayant d�marr�.
	Si on ne trouve pas la chaine d'octets c'est qu'elle est soit
	dispers�e sur le disque ou cod�e par un OU EXCLUSIF. Ce sont les
	deux m�thodes les plus employ�es. Voir 35MM.DEP et RF.DEP
 	Probl�me: comment rep�rer l'endroit d'ou sont tir�s les octets ?
	PERISCOPE offre des commandes pour s'arr�ter lorsqu'une position
	d�termin� est lu ou �crite. Mais ce dernier ne s'arr�te pas toujours.
	C'est le moment de tester l'arret sur adresse en �criture de ma carte
	PANO. Je place donc CS:IP � 34B3:0782 ( adresse paire; c'est
	magnifique ) et le switch READ/WRITE sur WRITE. 
	Je lance et... l'�cran de PERISCOPE s'affiche d�s le d�but du programme
	bien avant la demande du type de moniteur.

	Je me retrouve dans la boucle ci-dessous:
	Et par simple curiosit� je vais voir en 34B3:0782; tout ce qui est 
	avant 782 correspond au code et tout ce qui suit est n'importe quoi.
	A partir de l� je fais du pas � pas, et lorsque je vois mon 75 arriver
	avec l'instruction LODSW je sais que c'est gagn�. 
	Il suffit de faire un DUMP de la chaine pointer par LODSW pour trouver
	l'endroit ou est stock� 75.
	
	9CB0:0350 D1E8          SHR     AX,1
	9CB0:0352 D1E8          SHR     AX,1
	9CB0:0354 D1E8          SHR     AX,1
	9CB0:0356 D1E8          SHR     AX,1
	9CB0:0358 46            INC     SI
	9CB0:0359 BA5E03        MOV     DX,035E
	9CB0:035C EB09          JMP     0367
	9CB0:035E AD            LODSW
	9CB0:035F 86E0          XCHG    AL,AH
	9CB0:0361 80E40F        AND     AH,0F
	9CB0:0364 BA4C03        MOV     DX,034C
	9CB0:0367 3D0001        CMP     AX,0100

	Je m'interresse donc particuli�rement au deux octets 75 et 18 JNZ 79C
	que je voudrait remplacer par deux NOP. En fait il suffit de faire
	un saut avec un d�placement �gale � ZERO pour avoir le m�me r�sultat.
	Donc transformer l'octet 18 en 00. JNZ 784 ( 79Ch - 18h = 784h )
	Je continue mon pas � pas pour attendre le passage du 18. Celui-ci
	viens de DS:0C97. DS=8C84.
	
	Methode pratique, chercher la chaine 40181E71B60330FC54 et changer
	18 par 00.

	FREDDY